package com.leejie.springboot01.CASzixuansuo;

import java.util.concurrent.atomic.AtomicReference;

/**
 * 自旋锁
 */
public class SpinlockDemo {

    //原子类
    AtomicReference<Thread> atomicReference = new AtomicReference<>();

    //枷锁
    public void myLock(){
        Thread thread = Thread.currentThread();
        System.out.println(Thread.currentThread().getName()+"==> mylock");

        //自旋锁
        while (!atomicReference.compareAndSet(null,thread)){
        }
    }

    //解锁
    public void myUnLock(){
        Thread thread = Thread.currentThread();
        System.out.println(Thread.currentThread().getName()+"==> myUnlock");

        //解锁
        atomicReference.compareAndSet(thread,null);
    }
}


